export default function(refValue) {
//refValue 是一个字符串，代表某个 DOM 元素的 ref 名称。这个 ref 名称在组件模板中定义，代码中使
//用 this.$refs 通过这个名称访问到相应的 DOM 元素或组件实例。

  //总结如果有人设置了滚动，那么就调用自己的this.handleSetMainScroll方法给变自己的滚动条
  //如果自己的滚动条发生了改变，那么就调用自己的dleMainScroll，传递给别人自己改变了滚动条位置
  return {
    mounted() {
      this.$bus.$on("setMainScroll", this.handleSetMainScroll);
      //注册了一个事件监听器，用于监听 setMainScroll 事件。该事件触发时，
      //会调用 handleSetMainScroll 方法。
      this.$refs[refValue].addEventListener("scroll", this.handleMainScroll);
      //为通过 ref 引用的 DOM 元素添加
      //滚动事件监听器。当滚动事件触发时，会调用 handleMainScroll 方法。
    },
    beforeDestroy() {
      this.$bus.$emit("mainScroll");
      //触发 mainScroll 事件，通常用来通知其他组件或系统当前的滚动位置。
      this.$bus.$off("setMainScroll", this.handleSetMainScroll);
      this.$refs[refValue].removeEventListener("scroll", this.handleMainScroll);
    },
    methods: {
      handleSetMainScroll(scrollTop) {
        this.$refs[refValue].scrollTop = scrollTop;
      },//接收 scrollTop 作为参数，并将其设
      //置到 refValue 引用的元素的 scrollTop 属性上，用于同步滚动位置。
      handleMainScroll() {
        this.$bus.$emit("mainScroll", this.$refs[refValue]);
      },
      //当滚动事件触发时，发送 mainScroll 事件，并将 refValue 引用的元
      //素作为参数传递。这通常用于将滚动位置通知给其他需要同步滚动位置的组件或系统
    },
  };
}
